package org.alps.pattern.singleton.serializable;

import java.io.Serializable;

/**
 * @date 2021-04-30
 * @author zkw
 */
public class SerializableSingleton implements Serializable {
    private SerializableSingleton(){}

    public final static SerializableSingleton INSTANCE = new SerializableSingleton();
    public static SerializableSingleton getInstance() {
        return INSTANCE;
    }

    /**
     * 防止通过序列化的方式破坏单例
     * 重写readResolve方法，只不过是覆盖了反序列化出来的对象
     * 还是创建了两次，发生在JVM层面，相对来说比较安全
     * 之前反序列化出来的对象会被GC回收
     * @return
     */
    private Object readResolve() {
        return INSTANCE;
    }
}
